
// 函数名称是小写字母以下划线分割
fn another_function() {
    println!("Another function.");
}

// 函数如果需要参数必须生命参数的名称和类型
fn function_with_parameters(x: i32, y: i32) {
    println!("x = {}", x);
    println!("y = {}", y);
}

pub fn run_example() -> () {
    another_function();
    function_with_parameters(5, 6);

    // 函数体表达式：用 {} 包括的块来编写一个较为复杂的表达式
    let z = {
        let x = 10;
        let y = 20;
        // 注意：函数体表达式返回值，不能使用 return 关键字
        x + y
    };
    println!("z = {}", z);

    // 嵌套函数
    fn five() -> i32 {
        5
    }
    println!("five() = {}", five());

    // 函数体返回值
    fn add(a: i32, b: i32) -> i32 {
        // 可以用返回值表达式
        // a + b
        // 也可以用 return
        return a+b;
    }
    println!("add(2, 3) = {}", add(2, 3));
}